Microprocessor-based control systems rely on interrupt signals from peripheral devices ("peripherals") to notify a central processing unit ("CPU") when specific events occur. These events include expected events, such as completed operations, as well as unexpected events, such as errors. A typical peripheral can detect several kinds of events and the total number of events that can be detected by all the peripherals of a system is generally larger than the number of unique interrupt signals that a CPU can recognize, so generally each peripheral is allocated only one of these unique interrupt signals and each peripheral has a status register by which it indicates to the CPU one or more reasons for an interrupt signal. Each bit in the status register corresponds to an event that the device can detect and the setting of any combination of status bits in the status register generates one interrupt signal. When the CPU services an interrupt signal it reads the status bits in the interrupting device's status register to ascertain which event(s) occurred and then it resets the status bits to signify to the peripheral that it has serviced the event(s) and to enable the peripheral to post a subsequent event.
Requiring the CPU to perform separate read and reset (write) operations on the status register increases the time it takes the CPU to service an interrupt signal and, therefore, delays the servicing of interrupt signals from other peripherals, possibly beyond their maximum wait ("latency") time. Designers of prior-art circuits, such as the Motorola MC6821 Peripheral Interface Adapter, reduce the time to service an interrupt signal by providing self-resetting registers, which automatically reset all their bits upon being read. However, and quite problematically, if a new event occurs while the CPU is reading such a status register, the associated peripheral does not generate a corresponding interrupt signal because at the end of the read operation the register resets itself, including the bit that corresponds to the new event.